package com.smart.milvus.base;

import com.smart.milvus.bean.MilvusModel;

import java.lang.reflect.Field;

public interface DynamicCollectionHandler {

    /**
     * 动态集合名称
     *
     * @param model 型
     * @return {@link String }
     */
    String dynamicDatabaseName(Class<? extends MilvusModel<?>> model);

    /**
     * 动态集合名称
     *
     * @param model 型
     * @return {@link String }
     */
    String dynamicCollectionName(Class<? extends MilvusModel<?>> model, String prefix, String format, boolean underCamel);

    /**
     * 矢量维度
     *
     * @param model  型
     * @param fields 向量属性
     * @return {@link int[] }
     */
    int[] vectorDimension(Class<? extends MilvusModel<?>> model, Field[] fields);

    /**
     * 矢量维度
     *
     * @param model 型
     * @param field 田
     * @return {@link int[] }
     */
    int vectorDimension(Class<? extends MilvusModel<?>> model, Field field);
}
